package com.xing.binbackend.pattern.template32;

// 使用模板模式时的代码规范
public abstract class Template {
    // 使用protected可见性控制
    protected abstract void step1();

    // 提供清晰的javadoc说明
    /**
     * 可选预处理步骤（钩子方法）
     *
     * @return true表示需要执行预处理
     */
    protected boolean shouldPreprocess() {
        return false;
    }

    // 使用final保护核心流程
    public final void process() {
        init();
        if (shouldPreprocess()) { // 钩子方法控制流程
            preprocess();
        }
        step1();
        cleanup();
    }

    private void preprocess() {
    }

    private void init() {

    }

    private void cleanup() {

    }
}
